package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 拼箱单对象 px_box
 * 
 * @author ruoyi
 * @date 2024-07-02
 */
@ApiModel("拼箱单")
public class PxBox extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    @ApiModelProperty(value = "$column.columnComment", name = "boxId")
    private Long boxId;

    /** 关联订单ID(如果是代购的拼柜才有) */
    @Excel(name = "关联订单ID(如果是代购的拼柜才有)")
    @ApiModelProperty(value = "关联订单ID(如果是代购的拼柜才有)")
    private Long orderId;

    /** 拼柜用户id */
    @Excel(name = "拼柜用户id")
    @ApiModelProperty(value = "拼柜用户id")
    private Long userId;

    /** 产品名称,多个产品将会以逗号隔开 */
    @Excel(name = "产品名称,多个产品将会以逗号隔开")
    @ApiModelProperty(value = "产品名称,多个产品将会以逗号隔开")
    private String prodName;

    /** 订购流水号 */
    @Excel(name = "订购流水号")
    @ApiModelProperty(value = "订购流水号", name = "orderNumber")
    private String orderNumber;

    /** 报价总值 */
    @Excel(name = "报价总值")
    @ApiModelProperty(value = "报价总值", name = "total")
    private BigDecimal total;

    /** 实际总值 */
    @Excel(name = "实际总值")
    @ApiModelProperty(value = "实际总值", name = "actualTotal")
    private BigDecimal actualTotal;

    /** HS码 */
    @Excel(name = "HS码")
    @ApiModelProperty(value = "HS码", name = "hsCode")
    private String hsCode;

    /** 支付方式 0 手动代付 1 微信支付 2 支付宝 */
    @Excel(name = "支付方式 0 手动代付 1 微信支付 2 支付宝")
    @ApiModelProperty(value = "支付方式 0 手动代付 1 微信支付 2 支付宝", name = "payType")
    private Integer payType;

    /** 订单备注 */
    @Excel(name = "订单备注")
    @ApiModelProperty(value = "订单备注", name = "remarks")
    private String remarks;

    /** 订单状态1:报价中   2:拼柜待发货 3:预计拖柜（运输中） 4:完成（采购处理） 5:失败 */
    @Excel(name = "订单状态1:报价中   2:拼柜待发货 3:预计拖柜", readConverterExp = "运=输中")
    @ApiModelProperty(value = "订单状态1:报价中   2:拼柜待发货 3:预计拖柜", name = "status")
    private Integer status;

    /** 订单运费 */
    @Excel(name = "订单运费")
    @ApiModelProperty(value = "订单运费", name = "freightAmount")
    private BigDecimal freightAmount;

    /** 订单商品总数 */
    @Excel(name = "订单商品总数")
    @ApiModelProperty(value = "订单商品总数", name = "productNums")
    private Integer productNums;

    /** 付款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "付款时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "付款时间", name = "payTime")
    private Date payTime;

    /** 装柜日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "装柜日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "装柜日期")
    private Date loadingDate;

    /** 预计装柜日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计装柜日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "预计装柜日期")
    private Date preLoadingDate;

    /** 开船日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "开船日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "开船日期", name = "dvyTime")
    private Date dvyTime;

    /** 预计开船日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计开船日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "预计开船日期", name = "preDvyTime")
    private Date preDvyTime;

    /** 预计到港日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计到港日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "预计到港日期", name = "preArrTime")
    private Date preArrTime;

    /** 到港日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "到港日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "到港日期", name = "arrTime")
    private Date arrTime;

    /** 预计拖柜日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "预计拖柜日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "预计拖柜日期", name = "preHauTime")
    private Date preHauTime;

    /** 拖柜日期 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "拖柜日期", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "拖柜日期", name = "hauTime")
    private Date hauTime;

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "完成时间", name = "finallyTime")
    private Date finallyTime;

    /** 取消时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "取消时间", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty(value = "取消时间", name = "cancelTime")
    private Date cancelTime;

    /** 是否已经支付，1：已经支付过，0：，没有支付过 */
    @Excel(name = "是否已经支付，1：已经支付过，0：，没有支付过")
    @ApiModelProperty(value = "是否已经支付，1：已经支付过，0：，没有支付过", name = "isPayed")
    private Integer isPayed;

    /** 用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除 */
    @ApiModelProperty(value = "用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除", name = "delFlag")
    private Integer delFlag;

    /** 订单类型1:代购单 2：只有拼柜单 */
    @Excel(name = "订单类型1:代购单 2：只有拼柜单")
    @ApiModelProperty(value = "订单类型1:代购单 2：只有拼柜单", name = "orderType")
    private Integer orderType;

    /** 订单关闭原因 1-未同意报价 2-退款关闭 4-用户取消 15-已通过货到付款交易 */
    @Excel(name = "订单关闭原因 1-未同意报价 2-退款关闭 4-用户取消 15-已通过货到付款交易")
    @ApiModelProperty(value = "订单关闭原因 1-未同意报价 2-退款关闭 4-用户取消 15-已通过货到付款交易", name = "closeType")
    private Integer closeType;




    public void setBoxId(Long boxId)
    {
        this.boxId = boxId;
    }

    public Long getBoxId()
    {
        return boxId;
    }
    public void setOrderId(Long orderId) 
    {
        this.orderId = orderId;
    }

    public Long getOrderId() 
    {
        return orderId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setProdName(String prodName) 
    {
        this.prodName = prodName;
    }

    public String getProdName() 
    {
        return prodName;
    }
    public void setOrderNumber(String orderNumber) 
    {
        this.orderNumber = orderNumber;
    }

    public String getOrderNumber() 
    {
        return orderNumber;
    }
    public void setTotal(BigDecimal total) 
    {
        this.total = total;
    }

    public BigDecimal getTotal() 
    {
        return total;
    }
    public void setActualTotal(BigDecimal actualTotal) 
    {
        this.actualTotal = actualTotal;
    }

    public BigDecimal getActualTotal() 
    {
        return actualTotal;
    }
    public void setHsCode(String hsCode) 
    {
        this.hsCode = hsCode;
    }

    public String getHsCode() 
    {
        return hsCode;
    }
    public void setPayType(Integer payType) 
    {
        this.payType = payType;
    }

    public Integer getPayType() 
    {
        return payType;
    }
    public void setRemarks(String remarks) 
    {
        this.remarks = remarks;
    }

    public String getRemarks() 
    {
        return remarks;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }
    public void setFreightAmount(BigDecimal freightAmount) 
    {
        this.freightAmount = freightAmount;
    }

    public BigDecimal getFreightAmount() 
    {
        return freightAmount;
    }
    public void setProductNums(Integer productNums) 
    {
        this.productNums = productNums;
    }

    public Integer getProductNums() 
    {
        return productNums;
    }
    public void setLoadingDate(Date loadingDate)
    {
        this.loadingDate = loadingDate;
    }

    public Date getLoadingDate()
    {
        return loadingDate;
    }
    public void setPreLoadingDate(Date preLoadingDate)
    {
        this.preLoadingDate = preLoadingDate;
    }

    public Date getPreLoadingDate()
    {
        return preLoadingDate;
    }
    public void setPayTime(Date payTime) 
    {
        this.payTime = payTime;
    }

    public Date getPayTime() 
    {
        return payTime;
    }
    public void setDvyTime(Date dvyTime) 
    {
        this.dvyTime = dvyTime;
    }

    public Date getDvyTime() 
    {
        return dvyTime;
    }
    public void setPreDvyTime(Date preDvyTime) 
    {
        this.preDvyTime = preDvyTime;
    }

    public Date getPreDvyTime() 
    {
        return preDvyTime;
    }
    public void setPreArrTime(Date preArrTime) 
    {
        this.preArrTime = preArrTime;
    }

    public Date getPreArrTime() 
    {
        return preArrTime;
    }
    public void setArrTime(Date arrTime) 
    {
        this.arrTime = arrTime;
    }

    public Date getArrTime() 
    {
        return arrTime;
    }
    public void setPreHauTime(Date preHauTime) 
    {
        this.preHauTime = preHauTime;
    }

    public Date getPreHauTime() 
    {
        return preHauTime;
    }
    public void setHauTime(Date hauTime) 
    {
        this.hauTime = hauTime;
    }

    public Date getHauTime() 
    {
        return hauTime;
    }
    public void setFinallyTime(Date finallyTime) 
    {
        this.finallyTime = finallyTime;
    }

    public Date getFinallyTime() 
    {
        return finallyTime;
    }
    public void setCancelTime(Date cancelTime) 
    {
        this.cancelTime = cancelTime;
    }

    public Date getCancelTime() 
    {
        return cancelTime;
    }
    public void setIsPayed(Integer isPayed) 
    {
        this.isPayed = isPayed;
    }

    public Integer getIsPayed() 
    {
        return isPayed;
    }
    public void setDelFlag(Integer delFlag) 
    {
        this.delFlag = delFlag;
    }

    public Integer getDelFlag() 
    {
        return delFlag;
    }
    public void setOrderType(Integer orderType) 
    {
        this.orderType = orderType;
    }

    public Integer getOrderType() 
    {
        return orderType;
    }
    public void setCloseType(Integer closeType) 
    {
        this.closeType = closeType;
    }

    public Integer getCloseType() 
    {
        return closeType;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("boxId", getBoxId())
                .append("orderId", getOrderId())
                .append("userId", getUserId())
                .append("prodName", getProdName())
                .append("orderNumber", getOrderNumber())
                .append("total", getTotal())
                .append("actualTotal", getActualTotal())
                .append("hsCode", getHsCode())
                .append("payType", getPayType())
                .append("remarks", getRemarks())
                .append("status", getStatus())
                .append("freightAmount", getFreightAmount())
                .append("productNums", getProductNums())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("payTime", getPayTime())
                .append("loadingDate", getLoadingDate())
                .append("preLoadingDate", getPreLoadingDate())
                .append("dvyTime", getDvyTime())
                .append("preDvyTime", getPreDvyTime())
                .append("preArrTime", getPreArrTime())
                .append("arrTime", getArrTime())
                .append("preHauTime", getPreHauTime())
                .append("hauTime", getHauTime())
                .append("finallyTime", getFinallyTime())
                .append("cancelTime", getCancelTime())
                .append("isPayed", getIsPayed())
                .append("delFlag", getDelFlag())
                .append("orderType", getOrderType())
                .append("closeType", getCloseType())
                .append("createBy", getCreateBy())
                .append("updateBy", getUpdateBy())
                .toString();
    }
}
